SpringBoot设置文件虚拟路径映射 您所在的位置:网站首页 SpringMVC映射本地文件 SpringBoot设置文件虚拟路径映射

SpringBoot设置文件虚拟路径映射

2024-06-24 03:24| 来源: 网络整理| 查看: 265

前言

我们在写SpringBoot项目的时候,很大几率会遇到文件上传与下载功能。 我们一般访问服务器的资源都是resources下的公开资源,配置文件中一般会指定到类路径下的static文件夹下:spring.resources.static-locations=classpath:/static/,或者说不配置默认指定在类路径下:classpath:/,例如:

# 应用服务 WEB 访问端口 server.port=8080 # 项目资源路径:必须加static作为前缀才能访问 默认为/** spring.mvc.static-path-pattern=/static/** # 将项目资源路径映射到系统资源路径下 spring.resources.static-locations=classpath:/ #效果等同于不配置

但是我们可能会把一些项目的文件放在其他服务器或者硬盘中,这样可以更好的存储和管理系统的文件,那么我们应该如何通过项目的路径来访问这些文件呢?

只需要我们给SpringBoot中配置一个虚拟路径,将硬盘的路径映射到项目路径下,这样就可以通过项目路径来访问硬盘中的资源了。

本文将讲解2种方法

配置application.properties/yml自定义配置类实现WebMvcConfigurer接口 准备系统资源路径

为了演示效果,我会在本地系统路径中存放一张图片:

系统路径:H:\AFile\1.jpg 在这里插入图片描述

我们来访问一下系统资源下的一张小姐姐图片,访问的时候需要加上前缀file:然后加上绝对路径H:\AFile\1.jpg就可以访问到小姐姐这张图片,浏览器会在file:后面加上///,你只需要以前缀file:加上绝对路径即可无需写成file:,交给浏览器来做。 在这里插入图片描述

配置SpringBoot虚拟路径的映射

定义application文件

# 应用服务 WEB 访问端口 server.port=8080 # 项目静态资源路径,可以不写默认为/** # spring.mvc.static-path-pattern=/** # 将项静态目资源路径映射到系统资源路径下 spring.resources.static-locations=file:H:\\AFile

项目资源路径不写默认为/**,意味着你在localhost:8080/下能直接访问静态资源,而静态资源映射在系统资源H:\AFile\文件夹下,你所访问项目静态资源路径都和系统本地资源路径一一对应。

Tips:

spring.resources.static-locations可以指定多个资源路径,用,隔开

spring.resources.static-locations=file:G:\\AFile,file:H:\\AFile

如果访问多个路径中存在相同名称的资源,会采取就近原则,将静态资源路径从左往右寻找最近的一个资源返回给浏览器。

资源路径

访问项目静态资源:http://localhost:8080/1.jpg 对应的系统本地静态资源:H:\AFile\1.jpg

说白了就是项目路径http://localhost:8080/后面的资源名称会对应在系统本地路径H:\AFile\的后面 在这里插入图片描述

路径规则: 本地绝对路径替换掉本地静态资源路径为项目静态资源路径

H:\AFile\1.jpg替换掉H:\AFile\为localhost:8080/等于http://localhost:8080/1.jpg

验证

光说没用,下面来验证一下上面的说法:

浏览器访问http://localhost:8080/1.jpg看看效果: 在这里插入图片描述

我们访问的一直是H:\AFile下的资源文件,那如果我新建文件夹然后在里面放上文件会怎么样呢?

在H:\AFile下新建一个A文件夹,里面放上一张2.jpg图片

我们套用路径规则来访问一下: 本地绝对路径替换掉本地静态资源路径为项目静态资源路径

H:\AFile\A\2.jpg替换掉H:\AFile\为http://localhost:8080/等于http://localhost:8080/A/2.jpg

注意:本地路径的斜杠\需要换成项目路径的斜杠/

浏览器访问http://localhost:8080/A/2.jpg: 在这里插入图片描述

使用配置类

新建一个Java类名称自定义,加上注解@Configuration就是一个配置类,实现WebMvcConfigurer接口并重写addResourceHandlers()方法:

@Configuration public class MvcConfig implements WebMvcConfigurer { //设置文件虚拟路径映射 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/test/**").addResourceLocations("file:H:\\AFile\\"); } } addResourceHandler:添加一个资源处理程序,用于根据指定的 URL 路径模式提供静态资源。 将为与指定路径模式之一匹配的每个传入请求调用处理程序。addResourceLocations:添加一个或多个用于提供静态内容的资源位置。 每个位置都必须指向一个有效的目录。 可以将多个位置指定为逗号分隔的列表,并且将按照指定的顺序检查给定资源的位置。

白话文解释

addResourceHandlers:添加项目静态资源路径addResourceLocations:将项目静态资源映射到本地指定的资源路径 registry.addResourceHandler("/test/**").addResourceLocations("file:H:\\AFile\\");

连起来说白了就是localhost:8080/test/该路径下访问的静态资源对应着本地H:\AFile\目录下的资源文件。

演示

将之前的配置全部注释掉: 在这里插入图片描述 例如我要访问这张小姐姐图片 在这里插入图片描述

这里依然可以套用路径规则 本地绝对路径替换掉本地静态资源路径为项目静态资源路径

H:\AFile\1.jpg替换掉H:\AFile\为localhost:8080/test/等于localhost:8080/test/1.jpg

浏览器访问localhost:8080/test/1.jpg: 在这里插入图片描述

访问H:\AFile\A\下的2.jpg

H:\AFile\A\2.jpg替换掉H:\AFile\为localhost:8080/test/等于localhost:8080/test/A/2.jpg

浏览器访问localhost:8080/test/A/2.jpg: 在这里插入图片描述

SpringBoot设置文件虚拟路径映射教程结束!!!


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有